package com.ruoyi.social.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.video.domain.VideoAnalysisUser;
import com.ruoyi.video.domain.VideoImages;
import com.ruoyi.video.domain.VideoLineItem;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 视频数据对象 social_video
 * 
 * @author ruoyi
 * @date 2025-09-24
 */
public class SocialVideo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** ID */
    @Excel(name = "ID")
    private Long id;

    /** 视频内部编号 */
    private String videoNo;

    /** 外部ID */
    @Excel(name = "外部ID")
    private String videoOutid;

    /** 视频链接 */
    @Excel(name = "视频链接")
    private String videoLink;

    /** 平台 */
    @Excel(name = "平台")
    private String postPlatform;

    /** 发布日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发布日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date videoDate;

    /** 视频封面 */
    private String videoCover;

    /** 视频时长（秒） */
    private Long videoTime;

    // ---------------- 解析相关 ----------------
    /** 状态（解析/发布） */
    @Excel(name = "状态")
    private String status;

    /** 解析结果 */
    @Excel(name = "解析结果")
    private String content;

    /** 解析时间 */
    @Excel(name = "解析时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date workTime;

    /** 错误信息 */
    private String errmsg;

    /** 备注 */
    private String notes;

    /** MP4/MP3 存储路径 */
    private String mp4Path;
    private String mp3Path;

    /** 语言 */
    private String language;

    // ---------------- 社交指标 ----------------
    @Excel(name = "播放量")
    private Long videoViews;

    @Excel(name = "点赞量")
    private Long likes;

    @Excel(name = "评论量")
    private Long comments;

    @Excel(name = "分享量")
    private Long shares;

    @Excel(name = "收藏量")
    private Long saves;

    @Excel(name = "gmv($)")
    private BigDecimal gmvUsd;

    // ---------------- 脚本信息 ----------------
    @Excel(name = "脚本摘要")
    private String scriptSummaryOrigin;

    private String scriptSummaryEn;
    private String scriptSummaryCn;

    @Excel(name = "脚本全文")
    private String scriptDetailOrigin;

    private String scriptDetailEn;
    private String scriptDetailCn;

    // ---------------- 商品信息 ----------------
    private Long productId;
    private String productOutid;

    // ---------------- 评论分析 ----------------
    private String commentAnalysisOrigin;
    private String commentAnalysisEn;
    private String commentAnalysisCn;

    // ---------------- KOL 相关 ----------------
    private Long kolId;
    private String kolOutId;

    // ---------------- 更新信息 ----------------
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date postLastUpdateData;

    private Long postLastUpdateBy;

    /** 视频截图 */
    private List<VideoImages> videoImages;

    private List<VideoLineItem> videoLineItems;

    private VideoAnalysisUser user;


    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setVideoOutid(String videoOutid) 
    {
        this.videoOutid = videoOutid;
    }

    public String getVideoOutid() 
    {
        return videoOutid;
    }

    public void setVideoLink(String videoLink) 
    {
        this.videoLink = videoLink;
    }

    public String getVideoLink() 
    {
        return videoLink;
    }

    public void setPostPlatform(String postPlatform) 
    {
        this.postPlatform = postPlatform;
    }

    public String getPostPlatform() 
    {
        return postPlatform;
    }

    public void setVideoDate(Date videoDate) 
    {
        this.videoDate = videoDate;
    }

    public Date getVideoDate() 
    {
        return videoDate;
    }

    public void setVideoViews(Long videoViews) 
    {
        this.videoViews = videoViews;
    }

    public Long getVideoViews() 
    {
        return videoViews;
    }

    public void setLikes(Long likes) 
    {
        this.likes = likes;
    }

    public Long getLikes() 
    {
        return likes;
    }

    public void setComments(Long comments) 
    {
        this.comments = comments;
    }

    public Long getComments() 
    {
        return comments;
    }

    public void setShares(Long shares) 
    {
        this.shares = shares;
    }

    public Long getShares() 
    {
        return shares;
    }

    public void setSaves(Long saves) 
    {
        this.saves = saves;
    }

    public Long getSaves() 
    {
        return saves;
    }

    public void setGmvUsd(BigDecimal gmvUsd) 
    {
        this.gmvUsd = gmvUsd;
    }

    public BigDecimal getGmvUsd() 
    {
        return gmvUsd;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setScriptSummaryOrigin(String scriptSummaryOrigin) 
    {
        this.scriptSummaryOrigin = scriptSummaryOrigin;
    }

    public String getScriptSummaryOrigin() 
    {
        return scriptSummaryOrigin;
    }

    public void setScriptSummaryEn(String scriptSummaryEn) 
    {
        this.scriptSummaryEn = scriptSummaryEn;
    }

    public String getScriptSummaryEn() 
    {
        return scriptSummaryEn;
    }

    public void setScriptSummaryCn(String scriptSummaryCn) 
    {
        this.scriptSummaryCn = scriptSummaryCn;
    }

    public String getScriptSummaryCn() 
    {
        return scriptSummaryCn;
    }

    public void setScriptDetailOrigin(String scriptDetailOrigin) 
    {
        this.scriptDetailOrigin = scriptDetailOrigin;
    }

    public String getScriptDetailOrigin() 
    {
        return scriptDetailOrigin;
    }

    public void setScriptDetailEn(String scriptDetailEn) 
    {
        this.scriptDetailEn = scriptDetailEn;
    }

    public String getScriptDetailEn() 
    {
        return scriptDetailEn;
    }

    public void setScriptDetailCn(String scriptDetailCn) 
    {
        this.scriptDetailCn = scriptDetailCn;
    }

    public String getScriptDetailCn() 
    {
        return scriptDetailCn;
    }

    public void setProductId(Long productId)
    {
        this.productId = productId;
    }

    public Long getProductId()
    {
        return productId;
    }

    public void setProductOutid(String productOutid)
    {
        this.productOutid = productOutid;
    }

    public String getProductOutid()
    {
        return productOutid;
    }

    public void setCommentAnalysisOrigin(String commentAnalysisOrigin) 
    {
        this.commentAnalysisOrigin = commentAnalysisOrigin;
    }

    public String getCommentAnalysisOrigin() 
    {
        return commentAnalysisOrigin;
    }

    public void setCommentAnalysisEn(String commentAnalysisEn) 
    {
        this.commentAnalysisEn = commentAnalysisEn;
    }

    public String getCommentAnalysisEn() 
    {
        return commentAnalysisEn;
    }

    public void setCommentAnalysisCn(String commentAnalysisCn) 
    {
        this.commentAnalysisCn = commentAnalysisCn;
    }

    public String getCommentAnalysisCn() 
    {
        return commentAnalysisCn;
    }

    public void setPostLastUpdateData(Date postLastUpdateData) 
    {
        this.postLastUpdateData = postLastUpdateData;
    }

    public Date getPostLastUpdateData() 
    {
        return postLastUpdateData;
    }

    public void setPostLastUpdateBy(Long postLastUpdateBy) 
    {
        this.postLastUpdateBy = postLastUpdateBy;
    }

    public Long getPostLastUpdateBy() 
    {
        return postLastUpdateBy;
    }

    public String getVideoCover() {
        return videoCover;
    }

    public void setVideoCover(String videoCover) {
        this.videoCover = videoCover;
    }

    public Long getKolId() {
        return kolId;
    }

    public void setKolId(Long kolId) {
        this.kolId = kolId;
    }

    public String getKolOutId() {
        return kolOutId;
    }

    public void setKolOutId(String kolOutId) {
        this.kolOutId = kolOutId;
    }

    public String getVideoNo() {
        return videoNo;
    }

    public void setVideoNo(String videoNo) {
        this.videoNo = videoNo;
    }

    public Long getVideoTime() {
        return videoTime;
    }

    public void setVideoTime(Long videoTime) {
        this.videoTime = videoTime;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Date getWorkTime() {
        return workTime;
    }

    public void setWorkTime(Date workTime) {
        this.workTime = workTime;
    }

    public String getErrmsg() {
        return errmsg;
    }

    public void setErrmsg(String errmsg) {
        this.errmsg = errmsg;
    }

    public String getNotes() {
        return notes;
    }

    public void setNotes(String notes) {
        this.notes = notes;
    }

    public String getMp4Path() {
        return mp4Path;
    }

    public void setMp4Path(String mp4Path) {
        this.mp4Path = mp4Path;
    }

    public String getMp3Path() {
        return mp3Path;
    }

    public void setMp3Path(String mp3Path) {
        this.mp3Path = mp3Path;
    }

    public String getLanguage() {
        return language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public List<VideoImages> getVideoImages() {
        return videoImages;
    }

    public void setVideoImages(List<VideoImages> videoImages) {
        this.videoImages = videoImages;
    }

    public List<VideoLineItem> getVideoLineItems() {
        return videoLineItems;
    }

    public void setVideoLineItems(List<VideoLineItem> videoLineItems) {
        this.videoLineItems = videoLineItems;
    }

    public VideoAnalysisUser getUser() {
        return user;
    }

    public void setUser(VideoAnalysisUser user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("videoOutid", getVideoOutid())
            .append("videoLink", getVideoLink())
            .append("postPlatform", getPostPlatform())
            .append("videoDate", getVideoDate())
            .append("videoViews", getVideoViews())
            .append("likes", getLikes())
            .append("comments", getComments())
            .append("shares", getShares())
            .append("saves", getSaves())
            .append("gmvUsd", getGmvUsd())
            .append("status", getStatus())
            .append("scriptSummaryOrigin", getScriptSummaryOrigin())
            .append("scriptSummaryEn", getScriptSummaryEn())
            .append("scriptSummaryCn", getScriptSummaryCn())
            .append("scriptDetailOrigin", getScriptDetailOrigin())
            .append("scriptDetailEn", getScriptDetailEn())
            .append("scriptDetailCn", getScriptDetailCn())
            .append("productId", getProductId())
            .append("productOutid", getProductOutid())
            .append("commentAnalysisOrigin", getCommentAnalysisOrigin())
            .append("commentAnalysisEn", getCommentAnalysisEn())
            .append("commentAnalysisCn", getCommentAnalysisCn())
            .append("postLastUpdateData", getPostLastUpdateData())
            .append("postLastUpdateBy", getPostLastUpdateBy())
                .append("status", getStatus())
                .append("content", getContent())
                .append("createTime", getCreateTime())
                .append("createBy", getCreateBy())
                .append("workTime", getWorkTime())
            .toString();
    }
}
